<?php 

	class EventosController extends AppController
	{
		public $helpers = array('Html', 'Form');
		public $uses = array('Evento','TipoEvento','Sede','EventosSede');	
		
		public function beforeFilter()   
		{
	        parent::beforeFilter();
		}
		
		#---------------------------------------------------#
		#---------------Funciones Principales---------------#
		#---------------------------------------------------#
		public function index()
		{
			$this->layout = 'default_ini';	
		}
		
		public function add_eventos()
		{
			$this->layout = 'default_ini';	
			$this->llenar_combobox_tipo_evento(2);
			if($this->request->is('post') || $this->request->is('put'))
			{
				
				#if (!$this->validar_fechas_add_evento())
				#{

					$this->postAddEvento();

				#}
				#else 
				#{
					#error
				#}
			}
		}
		
		public function assign_eventos()
		{
			$this->layout = 'default_ini';
			$this->infoAssignEvento();
			if($this->request->is('post') || $this->request->is('put'))
			{
				$this->postAssignEvento();
				
			}
			
		}
		
		public function consult_eventos_especificos()
		{
			$this->layout = 'default_ini';
			$this->llenar_combobox_tipo_evento(1);	
			$this->set('fecha_inic', strtotime(date('Y-01-01')));
			$this->set('fecha_fin', strtotime(date('Y-12-31')));
		}
		
		public function consult_eventos_especificos1($id_tipo_evento,$nombre_evento_busq = null)
		{
			$this->layout = 'default_ini';	
			if ($id_tipo_evento == "")
			{
				$this->setMessageFlash(2,'error id_tipo_evento',null);
			}
			elseif ($nombre_evento_busq == "") 
			{	
				$this->setMessageFlash(2, 'error $id_hasta',null);
			}
			else 
			{
				$this->llenar_info_consult_evento_esp($id_tipo_evento,$nombre_evento_busq);
				if ($this->request->is('post') || $this->request->is('put') )
				{
					
					$this->postConsultEventoEspecificos($id_tipo_evento,$nombre_evento_busq);
				}
			}
		}
		
		public function consult_sedes_eventos()
		{
			$this->layout = 'default_ini';	
			$this->setParametersConsult();

		}
		
		public function consult_sedes_eventos1($id_sede,$id_tipo_evento,$id_desde,$id_hasta,$nombre_evento_busq = null)
		{
			$this->layout = 'default_ini';	
			if ($id_tipo_evento == "")
			{
				$this->setMessageFlash(2, 'error id_tipo_evento',null);
			}
			elseif ($id_sede == "") 
			{	
				$this->setMessageFlash(2, 'error id_sede',null);
			}
			elseif ($id_desde == "") 
			{	
				$this->setMessageFlash(2, 'error id_desde',null);
			}
			elseif ($id_hasta == "") 
			{	
				$this->setMessageFlash(2, 'error $id_hasta',null);
			}
			elseif ($nombre_evento_busq == "") 
			{	
				$this->setMessageFlash(2, 'error $nombre_evento_busq',null);
			}
			else 
			{
				$this->llenar_info_consult_sede_evento($id_tipo_evento,$id_sede,$id_desde,$id_hasta,$nombre_evento_busq);
				#debug($this->request->data());
				if ($this->request->is('post') || $this->request->is('put') )
				{
					$this->postConsultSedeEvento($id_sede, $id_tipo_evento, $id_desde, $id_hasta,$nombre_evento_busq);
				}
				
			}	

		}
		
		public function edit_evento_especifico($id_evento)
		{
			$this->layout = 'default_ini';	
			if (!$id_evento)
			{
				$this->setMessageFlash(2, 'error $id_evento_sede',null);
			}
			else
			{
				$this->infoEspecificaEvento($id_evento,1);
				if($this->request->is('post') || $this->request->is('put'))
				{
					
					$this->postEditEventoEspecifico();
				}
			}
		}
		
		public function detalle_evento_especifico($id_evento)
		{
			$this->layout = 'default_ini';	
			if (!$id_evento)
			{
				$this->setMessageFlash(2, 'error $id_evento_sede',null);
			}
			else
			{
				$this->infoEspecificaEvento($id_evento,2);
				
			}
		}
		
		public function edit_sede_eventos($id_evento_sede)
		{
			$this->layout = 'default_ini';	
			if (!$id_evento_sede)
			{
				$this->setMessageFlash(2, 'error $id_evento_sede',null);
			}
			
			else 
			{
				$this->infoEspecificaSedeEvento($id_evento_sede);
				if($this->request->is('post') || $this->request->is('put'))
				
				{
					$this->postEditSedeEvento($id_evento_sede);
				}
			}
		}
		
		public function detalle_sede_evento($id_evento_sede)
		{
			$this->layout = 'default_ini';	
			if (!$id_evento_sede)
			{
				$this->setMessageFlash(2, 'error $id_evento_sede',null);
			}
			
			else 
			{
				$this->infoEspecificaSedeEvento($id_evento_sede);
			}
			
		}
		
		public function delete_evento_especifico($id_evento,$id_val = null)
		{
			if (!$id_evento)
			{
				$this->setMessageFlash(2, 'error $id_evento',null);
			}
			else 
			{
				if($id_val == 1) // si se borra un solo eveneto
				{
					if($this->delete_single_evento_especifico($id_evento))
					{
						$this->setMessageFlash(1, 'Se borro el evento satisfactoriamente');
					}
					else 
					{
						$this->setMessageFlash(2, 'No se pudo borrar el evento');
					}
				}
				elseif($id_val == 2) // si se borra un grupo de eventos
				{
					if ($this->length_arreglo_evento($id_evento) > 2)
					{
						$this->delete_multiples_evento_especifico($id_evento);
					}
					elseif ($this->length_arreglo_evento($id_evento) == 2)
					{
						$evento = explode(',', $id_evento);
						if($this->delete_single_evento_especifico($evento[1]))
						{
							$this->setMessageFlash(1, 'Se borro el evento satisfactoriamente');
						}
						else 
						{
							$this->setMessageFlash(2, 'No se borro el evento ');
						}
					}
					
				}
				else 
				{
					$this->setMessageFlash(2, 'error $id_val null',null);
				}
			}
			$this->redirect($this->referer());
			
		}
		
		public function delete_sede_evento($id_evento_sede,$id_val = null)
		{
			if (!$id_evento_sede)
			{
				$this->setMessageFlash(2, 'error $id_evento_sede',null);
			}
			elseif(!$id_val)
			{
				$this->setMessageFlash(2, 'error $id_val null',null);
			}
			else 
			{
				if($id_val == 1)
				{
					if($this->delete_single_sede_evento($id_evento_sede))
					{
						$this->setMessageFlash(1, 'Se borro el evento satisfactoriamente');
					}
					else 
					{
						$this->setMessageFlash(2, 'No se pudo borrar el evento');
					}
				}
				elseif($id_val == 2)
				{
					if ($this->length_arreglo_evento($id_evento_sede) > 2)
					{
						$this->delete_multiples_sede_evento($id_evento_sede);
					}
					elseif($this->length_arreglo_evento($id_evento_sede) == 2)
					{
						$sede_evento = explode(',', $id_evento_sede);
						if($this->delete_single_sede_evento($sede_evento[1]))
						{
							$this->setMessageFlash(1, 'Se borro el evento satisfactoriamente');
						}
						else 
						{
							$this->setMessageFlash(2, 'No se pudo borrar el evento');
						}
					}
						
					
				}
				
						
			}
			$this->redirect($this->referer());
		}
		
		#---------------------------------------------------#
		#---------------Funciones Elelemts------------------#
		#---------------------------------------------------#
		
		public function getEditEvento($id_evento,$error = null)
		{
			$this->layout = false;
			if ($this->request->is('get')) 
			{
				$this->infoEspecificaEvento($id_evento,1);
				
				if ($error)
				{
					$this->set('errors',$this->parserError($error));	
				}
				else
				{
					$this->set('errors',null);	
				}
				
				$this->render('/Elements/GetEditEvento');
				
			}
			elseif ($this->request->is('post') || $this->request->is('put'))
			{
				
				$info_evento = array( 
										'Evento'=> $this->request->data
									);
				$this->postEditEventoEspecifico($info_evento);
			}
			
		}
		
		public function getDetalleEvento($id_evento)
		{
			$this->layout = false;
			if ($this->request->is('get')) 
			{
				
				$this->infoEspecificaEvento($id_evento,2);
				$this->render('/Elements/GetDetalleEvento');
			}
		}
		
		public function getDetalleEventoSede($id_evento_sede)
		{
			$this->layout = false;
			if ($this->request->is('get')) 
			{
				$this->infoEspecificaSedeEvento($id_evento_sede);
				$this->render('/Elements/GetDetalleEventoSede');
			}
		}
		
		public function getErrors($errors)
		{
			$errores_view = '';
			
			if (array_key_exists('nombre_evento', $errors))
			{
				$errores_view = $errores_view .'|'.'Nombre del Evento'.'++'.$errors['nombre_evento'][0];
			}
			if (array_key_exists('tipo_evento_id', $errors))
			{
				$errores_view = $errores_view .'|'.'Tipo del Evento'.'++'.$errors['tipo_evento_id'][0];
			}
	
			return $errores_view;
			
			
		}
		public function parserError($error)
		{
			$array_error = array();	
				
			$string_error = explode('|', $error);
			
			for ($i = 0; $i < count($string_error); $i++)
			{
				if ($i != 0)
				{
					$string_problema = explode('++',$string_error[$i]);
						
					array_push($array_error,array(
													'campo' => $string_problema[0],
													'error' => $string_problema[1],
													)
								);
				}
				
			}
			return $array_error;
		}
		
		public function getEditEventoSede($id_evento_sede,$error = null)
		{
			$this->layout = false;
			
			if ($this->request->is('get')) 
			{
				$this->infoEspecificaSedeEvento($id_evento_sede);
				
				if ($error)
				{
					$this->set('errors',$this->parserError($error));	
				}
				else
				{
					$this->set('errors',null);	
				}
				
				$this->render('/Elements/GetEditEventoSede');
			}
			elseif ($this->request->is('post') || $this->request->is('put') )
			{
				
				$date_desde = date('Y-m-d',$this->request->data['fecha_inic_evento']);
				$date_hasta = date('Y-m-d',$this->request->data['fecha_fin_evento']);
				
				$info_evento_sede = array( 
											'EditSedeEvento'=> array(
																'id' => $this->request->data['id'],
																'fecha_inic_evento' => $date_desde,
																'fecha_fin_evento' => $date_hasta,
																'hora_inic' => $this->request->data['hora_inic'],
																'hora_fin' => $this->request->data['hora_fin'],
																
															) 
											
										);
	
				
				$this->postEditSedeEvento($info_evento_sede);
			}
			
		}
		
		public function getSummary()
		{
			$this->layout = false;
			$this->render('/Elements/ErrorSummary');
		}
		
		#---------------------------------------------------#
		#---------------Funciones Secundarias---------------#
		#---------------------------------------------------#
		
		public function getFechaFormAdd($fecha)
		{
			$separacion_fecha = explode('/', $fecha);
			$string_fecha = ''.$separacion_fecha[2].'-'.$separacion_fecha[1].'-'.$separacion_fecha[0];

			return date($string_fecha);
		}
		
		public function setParametersConsult()
		{
			$this->llenar_combobox_tipo_evento(1);
			$this->llenar_combobox_sede(1);
					
			$this->set('fecha_inic', strtotime(date('Y-01-01')));
			$this->set('fecha_fin', strtotime(date('Y-12-31')));
		}
		
		private function setMessageFlash($id,$mensaje,$nombre_mensaje)
		{
			if (is_null($nombre_mensaje))
			{
				$nombre_mensaje = 'flash';
			}
			switch ($id) 
			{
				case 1: // mensaje bueno
					$this->Session->setFlash($mensaje,'default',array('class'=>'success'),$nombre_mensaje);
					break;
				case 2: // mensaje malo
					$this->Session->setFlash($mensaje,'default',array('class'=>'error-message'),$nombre_mensaje);
					break;
				case 3: // mensaje cuidado
					$this->Session->setFlash($mensaje,'default',array('class'=>'notice'),$nombre_mensaje);
					
					break;
				
				default:
					
					break;
			}
		}
		
		public function getGridConsultEventoEspecifico($id_tipo_evento,$nombre_evento_busq)
		{
			
			$this->layout = false;
			if ($this->request->is('get')) 
			{
				
				$this->llenar_eventos(2,$id_tipo_evento, 0, 0, 0, $nombre_evento_busq);
				$this->render('/Elements/GridConsultEventoEspecifico');
			}
			
		}
		
		public function getGridConsultEventoSede($id_sede,$id_tipo_evento,$id_desde,$id_hasta,$nombre_evento_busq)
		{
			
			$this->layout = false;
			if ($this->request->is('get')) 
			{
				
				$this->llenar_eventos(1,$id_tipo_evento,$id_sede,$id_desde,$id_hasta,$nombre_evento_busq);
				$this->render('/Elements/GridConsultEventoSede');
			}
			
		}
		
		private function infoAssignEvento()
		{
			$this->llenar_combobox_sede(2);
			$Todos_Eventos = $this->Evento->find('all');
			$Todos_Tipo_Eventos = $this->TipoEvento->find('all');
			
			/*$Todos_Eventos = $this->Evento->query('SELECT E.ID AS EVENTO_ID, ES.ID AS EVENTO_SEDE_ID, S.ID AS SEDE_ID,
													E.NOMBRE_EVENTO, ES.FECHA_INICIO_EVENTO, ES.FECHA_FIN_EVENTO
													FROM EVENTOS_SEDES ES, SEDES S, EVENTOS E
													WHERE  E.ID = ES.EVENTO_ID AND S.ID = ES.SEDE_ID');*/
			
			$this->set('Todos_Eventos',$Todos_Eventos);
			$this->set('Todos_Tipo_Eventos',$Todos_Tipo_Eventos);
		}
		
		private function length_arreglo_evento($arreglo_evento)
		{
			$eventos = explode(',', $arreglo_evento);
			return count($eventos);
		}
		
		private function eliminar_sede_evento($id_sede_evento)
		{
				
			try
			{
				$this->Evento->query('DELETE FROM eventos_sedes WHERE id = '.$id_sede_evento);
				return true;
			}
			catch(Exception $ee)
			{
				return false;
			}
			
		}
		
		private function delete_single_sede_evento($id_sede_evento)
		{
			return $this->eliminar_sede_evento($id_sede_evento);
		}
		
		private function delete_multiples_sede_evento($id_sede_eventos)
		{
			$sede_eventos = explode(',', $id_sede_eventos);
			
			$buenas = array();
			$malas = array();
			
			foreach ($sede_eventos as $sede_evento) 
			{
				if($sede_evento != "")
				{
					if($this->eliminar_sede_evento($sede_evento))
					{
						array_push($buenas,$sede_evento);
					}
					else 
					{
						array_push($malas,$sede_evento);
					}
				}
			}
			if ($buenas != null )
			{
				if ($malas != null)
				{
					$this->setMessageFlash(3, 'No se pudo terminar por completo el proceso');
					return 3; // significa que varias se pudieron eliminar, otras no.
				}
				else 
				{
					$this->setMessageFlash(1, 'Se eliminaron los eventos seleccionados');	
					return 1; // significa que todas se pudieron eliminar.
				}
			}
			else 
			{
				if ($malas != null)
				{
					$this->setMessageFlash(2, 'No se eliminaron los eventos seleccionados');
					return 2; //significa que no se puedieron eliminar ninguna
				}
				else 
				{
					$this->setMessageFlash(2,'error al elmiminar sede_eventos');
					return 0; // error
				}
			}
		}
		
		private function eliminar_evento_especifico($id_evento_especifico)
		{
			try
			{
				$this->Evento->query('DELETE FROM eventos WHERE id = '.$id_evento_especifico);
				return true;
			}
			catch (Exception $e)
			{
				return false;
			}
		}
		
		private function delete_single_evento_especifico($id_evento_especifico)
		{
			return $this->eliminar_evento_especifico($id_evento_especifico);
			
		}
		
		private function delete_multiples_evento_especifico($id_evento_especificos)
		{
			$eventos_especificos = explode(',', $id_evento_especificos);
			
			$buenas = array();
			$malas = array();
			
			foreach ($eventos_especificos as $evento_especifico) 
			{
				if($evento_especifico != "")
				{

					if($this->eliminar_evento_especifico($evento_especifico))
					{
						array_push($buenas,$evento_especifico);
					}
					else 
					{
						array_push($malas,$evento_especifico);
					}

				}
			}
			if ($buenas != null )
			{
				if ($malas != null)
				{
						
					$this->setMessageFlash(3, 'No se pudo terminar por completo el proceso');
					return 3; // significa que varias se pudieron eliminar, otras no.
				}
				else 
				{
					$this->setMessageFlash(1, 'Se borro los eventos seleccionados');
					return 1; // significa que todas se pudieron eliminar.
				}
			}
			else 
			{
				if ($malas != null)
				{
					$this->setMessageFlash(2, 'No se borro los eventos seleccionados');
					return 2; //significa que no se puedieron eliminar ninguna
				}
				else 
				{
					$this->setMessageFlash(2, 'error al borrar el evento');	
					return 0; // error
				}
			}
		}
		
		private function ir_pagina_defualt($id)
		{
			switch ($id) {
				case 1:
					$this->redirect(array('action' => 'consult_sedes_eventos',0,0,strtotime(date('Y-m-d')),strtotime(date('Y-m-d')),'*'));
					break;
				
				case 2:
					$this->redirect(array('action' => 'consult_eventos_especificos',0,"*" ));	
					break;
			}
		}
		
		private function postConsultEventoEspecificos($id_tipo_evento,$nombre_evento)
		{
			

				$nombre_a_buscar = $this->request->data['Consult_Evento']['nombre_evento_busq'];
				if ($nombre_a_buscar == NULL)
				{
					$nombre_a_buscar = '*';
				}
				$tipo_evento = $this->request->data['Consult_Evento']['tipo_de_evento'];
				$this->redirect(array('action' => 'consult_eventos_especificos', $tipo_evento,$nombre_a_buscar));
		
				
	
		}
		
		private function postEditEventoEspecifico($data)
		{
			$this->Evento->create();
			$this->Evento->set($data);
			
			if($this->Evento->validates())
			{
				if($this->Evento->save($data))
				{
					$this->setMessageFlash(1, 'Guardo el Evento',null);
					
				}
				else 
				{
					$this->setMessageFlash(2, 'No se Guardo el Evento',null);
					$this -> redirect(array(
											'controller' => 'Eventos',
											'action' => 'getEditEvento',$this->Evento->id
									   )
								 );
					$this->set('errors', $this->Evento->validationErrors);
					
				}
				$this -> redirect(array(
											'controller' => 'Eventos',
											'action' => 'getEditEvento',$this->Evento->id
									   )
								 );
			}
			else 
			{
				$this->setMessageFlash(2, 'errores',null);
				$errors = $this->Evento->validationErrors;
				$this -> redirect(array(
											'controller' => 'Eventos',
											'action' => 'getEditEvento',$this->Evento->id, $errors
									   )
								 );
				
				
			}
			
			
			
		}
		
		private function infoEspecificaEvento($id_evento,$id)
		{
			if ($id == 1)
			{
				$evento_especifico = $this->Evento->findAllById($id_evento);
				$this->llenar_combobox_tipo_evento(2);
			}
			else 
			{
				$evento_especifico = $this->Evento->query(
															'SELECT E.*, TE.*
															FROM eventos E, tipo_eventos TE	
															WHERE E.tipo_evento_id = TE.id
															AND E.id = '.$id_evento);
				
			}
			
			
			$this->set('evento_especifico',$evento_especifico);
			
		}
		
		private function validar_hora($hora1,$hora2)
		{
			if (($this->getTiempoDeHoras($hora1)) > ($this->getTiempoDeHoras($hora2)))
			{
				return false;
			}
			else 
			{
				return true;
			}
		}
		
		private function getTiempoDeHoras($hora)
		{
			$arreglo_meridian_hora = explode(" ",$hora);
			$arreglo_valors_hora = explode(":", $arreglo_meridian_hora[0]);
			if (($arreglo_meridian_hora[1] == "PM") && ($arreglo_meridian_hora[0] != 12))
			{
				$arreglo_valors_hora[0] = $arreglo_valors_hora[0] + 12;

			}
			elseif  (($arreglo_meridian_hora[1] == "AM") && ($arreglo_meridian_hora[0] == 12))
			{
				$arreglo_valors_hora[0] = $arreglo_valors_hora[0] - 12;
				
			}
			$valorhora_to_segundo = $arreglo_valors_hora[0]*3600;
			$valormin_to_segundo = $arreglo_valors_hora[1]*60;
			
			return $valorhora_to_segundo+$valormin_to_segundo;
		}
		
		private function postEditSedeEvento($info_evento_sede)
		{
			$id_evento_sede = $info_evento_sede['EditSedeEvento']['id'];
			$fecha_inicio = $info_evento_sede['EditSedeEvento']['fecha_inic_evento'];
			$fecha_fin = $info_evento_sede['EditSedeEvento']['fecha_fin_evento'];
			$fecha_inicio_total = date('Y-m-d',strtotime($fecha_inicio));
			$fecha_fin_total = date('Y-m-d',strtotime($fecha_fin));
			$hora_inicio = $info_evento_sede['EditSedeEvento']['hora_inic'];
			$hora_fin = $info_evento_sede['EditSedeEvento']['hora_fin'];
			
			$evento_sede_array =  array(
											'EventosSede' => array(
																		'id' => $id_evento_sede,
																		'fecha_inicio_evento' => $fecha_inicio_total,
																		'fecha_fin_evento' => $fecha_fin_total,
																		'hora_inic' => $hora_inicio,
																		'hora_fin' => $hora_fin
																	)
										);
			
			$this->EventosSede->create();
			
			$this->EventosSede->set($evento_sede_array);
		
			$error = null;
			
			if ($this->EventosSede->validates()) 
			{
				if ($this->EventosSede->save($evento_sede_array))
				{
					$this->setMessageFlash(1, 'Se guardo el Evento',null);
					
				}
				else 
				{
					$this->setMessageFlash(2, 'No se guardo el Evento',null);
					
				}
			}
			else 
			{
				$this->setMessageFlash(2, 'No se guardo el Evento',null);
				$error = $this->getErrors( $this->EventosSede->validationErrors);
			}
				$this->redirect(array(
											'controller' => 'Eventos',
											'action' => 'getEditEventoSede',$this->EventosSede->id,$error
									   )
								 );

		}
		
		private function infoEspecificaSedeEvento($id_evento_sede)
		{
			$info_evento = $this->Evento->query('SELECT ES.*, E.*, S.*, TE.* 
													FROM eventos_sedes ES, sedes S, eventos E, tipo_eventos TE 
													WHERE  E.id = ES.evento_id 
													AND S.id = ES.sede_id 
													AND TE.id = E.tipo_evento_id
													AND ES.id = '.$id_evento_sede);
			
			
			$tiempo_inicio = strtotime($info_evento[0]['ES']['fecha_inicio_evento']);
			$tiempo_fin = strtotime($info_evento[0]['ES']['fecha_fin_evento']);
			
			
			$this->set('tiempo_inicio',$tiempo_inicio);
			$this->set('tiempo_fin',$tiempo_fin);
			
			$this->set("info_evento",$info_evento);
		}
		
		private function addEventoSede($id_sede,$id_evento,$fecha_inicio,$fecha_fin,$hora_inicio,$hora_fin)
		{
			$date_inicio = date('Y-m-d',strtotime($fecha_inicio));
			$date_fin = date('Y-m-d',strtotime($fecha_fin));
			$this->EventosSede->create();
			
			$evento_assign = array('EventosSede' => array(
			    										'sede_id' => $id_sede,
			    										'evento_id' => $id_evento,
			    										'fecha_inicio_evento' => $date_inicio,
			    										'fecha_fin_evento' => $date_fin,
			    										'hora_inic' => $hora_inicio,
			    										'hora_fin' => $hora_fin
													 )
									);
								
			
			if ($this->EventosSede->save($evento_assign))
			{
				$this->setMessageFlash(1, 'Se Asigno el Evento',null);
				$this->redirect(array('action' => 'index'));
			}
			else 
			{
				$this->setMessageFlash(1, 'No Se Asigno el Evento',null);
			}
			/*try
			{
				$this->Evento->query('INSERT INTO EVENTOS_SEDES(SEDE_ID,EVENTO_ID,FECHA_INICIO_EVENTO,FECHA_FIN_EVENTO,HORA_INIC,HORA_FIN) 
											VALUES ('.$id_sede.','.$id_evento.',"'.$date_inicio.'",
											"'.$date_fin.'","'.$hora_inicio.'","'.$hora_fin.'")');
				$this->setMessageFlash(1, 'Se guardo el Evento',null);(__('Se Asigno el Evento'));
			}
			catch (Exception $e)
			{
				$this->setMessageFlash(1, 'Se guardo el Evento',null);(__('No Se Asigno el Evento'));
			}*/
			
		}
		
		private function postAssignEvento()
		{
			$fecha_inic_evento = $this->request->data['Assign']['fecha_inic_evento'];
			$fecha_fin_evento = $this->request->data['Assign']['fecha_fin_evento'];
			$id_evento = $this->request->data['Assign']['id_evento'];
			$id_sede = $this->request->data['Assign']['sede_id'];
			
			$hora_inicio_total = $this->request->data['Assign']['hora_inic']['hour'];
			$hora_fin_total = $this->request->data['Assign']['hora_fin']['hour'];

			$this->addEventoSede($id_sede, $id_evento, $fecha_inic_evento, $fecha_fin_evento, $hora_inicio_total, $hora_fin_total);
			
		
		}
		
		private function postAddEvento()
		{
			$nombre_evento = $this->request->data['Evento']['nombre_evento'];
			$id_evento = $this->request->data['Evento']['tipo_evento_id'];
			$descripcion_evento = $this->request->data['Evento']['descripcion_evento'];
			$this->insert_evento($nombre_evento, $descripcion_evento, $id_evento);
			
					
		}

		private function insert_evento($nombre_evento, $descripcion_evento, $id_evento )
		{
			$array_query_evento = array('Evento' => array(
															'nombre_evento' => $nombre_evento,
															'descripcion_evento' => $descripcion_evento,
															'tipo_evento_id' => $id_evento
														 )
										);
			if($this->Evento->save($array_query_evento))
			{
				$this->setMessageFlash(1, 'Se Guardo el Evento',null);
				$this->redirect(array('action' => 'index'));
				
			}
			else 
			{
				$this->setMessageFlash(2, 'No se guardo el Evento',null);
			}
			
			
		}
		
		private function validar_fechas_add_evento()
		{
			$desde = strtotime($this->request->data['Evento']['fecha_inic_evento']);
			$hasta = strtotime($this->request->data['Evento']['fecha_fin_evento']);
			$hora_desde = $this->request->data['Evento']['hora_inic']['hour'];
			$hora_hasta = $this->request->data['Evento']['hora_fin']['hour'];
			$minuto_desde = $this->request->data['Evento']['hora_inic']['min'];
			$minuto_hasta = $this->request->data['Evento']['hora_fin']['min'];
			$mer_desde = $this->request->data['Evento']['hora_inic']['meridian'];
			$mer_hasta = $this->request->data['Evento']['hora_fin']['meridian'];
			if ($mer_desde == 'pm')
			{
				$hora_desde = $hora_desde + 12;
			}
			if ($mer_hasta == 'pm')
			{
				$hora_hasta = $hora_hasta + 12;
			}
			
			$validacion_fecha = $desde > $hasta;
			if ($desde > $hasta)
			{
				$this->setMessageFlash(1, 'Se guardo el Evento',null);('error 1');
				return true;
			}
			elseif ($desde == $hasta)
			{
				if ($hora_desde > $hora_hasta)
				{
					
					return true;
				}
				elseif (($hora_desde == $hora_hasta) && ($minuto_desde > $minuto_hasta)) 
				{
					
					return true;
				}
				
			}
			return false;
			
		}
		
		private function llenar_info_consult_sede_evento($id_tipo_evento,$id_sede,$id_desde,$id_hasta,$nombre_evento)
		{
				
			
			$this->llenar_combobox_tipo_evento(1);
			$this->llenar_combobox_sede(1);
			$this->llenar_eventos(1,$id_tipo_evento,$id_sede,$id_desde,$id_hasta,$nombre_evento);
			$this->set('id_tipo_eventos',$id_tipo_evento);
			$this->set('id_sedes',$id_sede);
			$this->set('id_desde',$id_desde);
			$this->set('id_hasta',$id_hasta);
			$this->set('nombre_evento_buscado',$nombre_evento);
			/*$this->set('id_mes',$id_mes);
			$this->set('id_año',$id_año);*/
		}
		
		private function llenar_info_consult_evento_esp($id_tipo_evento,$nombre_evento)
		{
			$this->llenar_combobox_tipo_evento(1);
			$this->llenar_eventos(2,$id_tipo_evento, 0, 0, 0, $nombre_evento);
			$this->set('id_tipo_evento',$id_tipo_evento);
			$this->set('nombre_evento_buscado',$nombre_evento);
			
			
		}
		
		private function postConsultSedeEvento($id_sede,$id_tipo_evento,$id_desde,$id_hasta,$nombre_evento)
		{
			
			$fecha_desde = $this->request->data['Consult_Evento']['calendario_desde_fecha'];
			$fecha_hasta = $this->request->data['Consult_Evento']['calendario_hasta_fecha'];
			$tiempo_desde = strtotime('1 '.$fecha_desde);
			$tiempo_hasta = strtotime('1 '.$fecha_hasta);
			if ($this->verificar_fecha($tiempo_desde,$tiempo_hasta))
			{
				$nombre_a_buscar = $this->request->data['Consult_Evento']['nombre_evento_busq'];
				if ($nombre_a_buscar == NULL)
				{
					$nombre_a_buscar = '*';
				}
				$tipo_evento = $this->request->data['Consult_Evento']['tipo_de_evento'];
				$sede = $this->request->data['Consult_Evento']['sede_empresa'];
				$this->redirect(array('action' => 'consult_sedes_eventos', $sede, $tipo_evento, $tiempo_desde, $tiempo_hasta,$nombre_a_buscar));
			}
			else 
			{
				$this->setMessageFlash(1, "error Fecha");
				$this->redirect(array('action' => 'consult_sedes_eventos', $id_sede, $id_tipo_evento, $tiempo_desde, $tiempo_desde, $nombre_evento));
			}
	
		}
		
		private function verificar_fecha($fecha_desde, $fecha_hasta)
		{
			if ($fecha_desde <= $fecha_hasta)
				return true;
			else		
				return false;
		}
		
		private function llenar_combobox_sede($id)
		{
			$sedes = $this->Sede->find('all');
			

			$arreglo = array();
			if ($id == 1)
			{
				array_push($arreglo, array( 0 => 'Todos'));
			}			
			foreach ($sedes as $sede) 
			{
					array_push($arreglo,array( $sede['Sede']['id'] => $sede['Sede']['nombre_sede']));
			}
			
			$this->set('sedes',$arreglo);

		}
		
		private function llenar_eventos($id_busqueda,$id_tipo_evento,$id_sede,$id_desde,$id_hasta,$nombre_evento)
		{
			
			$fecha_desde = date_create();
			$fecha_hasta = date_create();
			
			date_timestamp_set($fecha_desde, $id_desde);
			date_timestamp_set($fecha_hasta, $id_hasta);
			
			$date_desde = date_format($fecha_desde, 'Y/m/1');
			$date_hasta = date_format($fecha_hasta, 'Y/m/t');
			
			
			
			if ($id_busqueda == 1)
			{
				$str_query = 'SELECT E.*, ES.*, TE.*, S.*
								FROM eventos E, tipo_eventos TE, eventos_sedes ES, sedes S
								WHERE TE.id = E.tipo_evento_id 
								AND S.id = ES.sede_id
								AND ES.evento_id = E.id';
			
			
				$str_query = $str_query.' AND ES.fecha_inicio_evento BETWEEN "'.$date_desde.'" AND "'.$date_hasta.'"';
			}
			elseif ($id_busqueda == 2)
			{
				$str_query = 'SELECT E.*
								FROM eventos E, tipo_eventos TE
								WHERE TE.id = E.tipo_evento_id';
			}
			if ($id_tipo_evento != 0)
			{
				$str_query = $str_query.' AND TE.id = '.$id_tipo_evento;
			}
			if ($id_sede != 0)
			{
				$str_query = $str_query.' AND S.id = '.$id_sede;
			}
			if ($nombre_evento != '*')
			{
				$str_query = $str_query.' AND E.nombre_evento like "%'.$nombre_evento.'%"';
			}
			if ($id_busqueda == 1)
			{
				$str_query = $str_query . ' ORDER BY ES.fecha_inicio_evento ASC ';
			}
			elseif($id_busqueda == 2)
			{
				$str_query = $str_query . ' ORDER BY E.id ASC ';
				$this->set('id_tipo_evento',$id_tipo_evento);
			}
			$evento = $this->Evento->query($str_query);
											
			$this->set('eventos',$evento);
										
		}
		
		private function llenar_combobox_tipo_evento($id)
		{
			$tipo_evento = $this->TipoEvento->find('all');

			$arreglo = array();
			if ($id == 1)
			{
				array_push($arreglo, array( 0 => 'Todos'));
			}
			foreach ($tipo_evento as $tipo_eventos) 
			{
					array_push($arreglo, array( $tipo_eventos['TipoEvento']['id'] => $tipo_eventos['TipoEvento']['nombre_tipo_evento']));
			}
			
			$this->set('tipoeventos',$arreglo);
		}
		
	}




?>